package net.suncaper.mvc.service;

import net.suncaper.mvc.model.domain.Order;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 订单业务接口
 */
public interface IOrderService {
    /**
     * 获取用户所有订单
     *
     * @param userId 用户ID
     * @return 订单列表
     */
    List<Order> getUserOrders(String userId);

    /**
     * 获取所有订单
     *
     * @return 订单列表
     */
    List<Order> getAllOrders();

    /**
     * 根据酒店名称获取订单
     *
     * @param hotelName 酒店名称
     * @return 订单列表
     */
    List<Order> getOrdersByHotel(String hotelName);

    /**
     * 创建订单（自动生成自增ID）
     *
     * @return 创建成功的订单对象（包含自动生成的ID）
     */
    public Order createOrder(String userId, String hotelName, String roomType);

    /**
     * 支付订单（通过支付时间为空筛选未支付订单，结合订单ID精准定位）
     *
     * @param orderId       订单ID（用于精准定位）
     * @param paymentMethod 支付方式（如：支付宝、微信支付）
     * @param amount        支付金额
     */
    void payOrder(String orderId, String paymentMethod, BigDecimal amount);

    /**
     * 取消订单（通过取消时间为空筛选可取消订单，结合订单ID精准定位）
     *
     * @param orderId    订单ID（用于精准定位）
     */
    void cancelOrder(String orderId);

    /**
     * 根据订单ID获取订单
     * @param orderId 订单ID
     * @return 订单对象
     */
    Order getOrderById(String orderId);

    /**
     * 更新订单
     * @param order 订单对象
     * @return 更新结果
     */
    boolean updateOrder(Order order);

    /**
     * 删除订单
     * @param orderId 订单ID
     * @return 删除结果
     */
    boolean deleteOrder(String orderId);
}